home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1996 #6 / Amiga Plus CD - 1996 - No. 06.iso / pd / spiele / circle30bpl11 / src / spec_assign.c < prev    next >
C/C++ Source or Header  |  1992-09-02  |  8KB  |  307 lines

  1. /* ************************************************************************
  2. *   File: spec_assign.c                                 Part of CircleMUD *
  3. *  Usage: Functions to assign function pointers to objs/mobs/rooms        *
  4. *                                                                         *
  5. *  All rights reserved.  See license.doc for complete information.        *
  6. *                                                                         *
  7. *  Copyright (C) 1993, 94 by the Trustees of the Johns Hopkins University *
  8. *  CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991.               *
  9. ************************************************************************ */
  10.  
  11. #include "conf.h"
  12. #include "sysdep.h"
  13.  
  14. #include "structs.h"
  15. #include "db.h"
  16. #include "interpreter.h"
  17. #include "utils.h"
  18.  
  19. extern struct room_data *world;
  20. extern int top_of_world;
  21. extern int mini_mud;
  22. extern struct index_data *mob_index;
  23. extern struct index_data *obj_index;
  24.  
  25. /* functions to perform assignments */
  26.  
  27. void ASSIGNMOB(int mob, SPECIAL(fname))
  28. {
  29.   if (real_mobile(mob) >= 0)
  30.     mob_index[real_mobile(mob)].func = fname;
  31.   else if (!mini_mud) {
  32.     sprintf(buf, "SYSERR: Attempt to assign spec to non-existant mob #%d",
  33.         mob);
  34.     log(buf);
  35.   }
  36. }
  37.  
  38. void ASSIGNOBJ(int obj, SPECIAL(fname))
  39. {
  40.   if (real_object(obj) >= 0)
  41.     obj_index[real_object(obj)].func = fname;
  42.   else if (!mini_mud) {
  43.     sprintf(buf, "SYSERR: Attempt to assign spec to non-existant obj #%d",
  44.         obj);
  45.     log(buf);
  46.   }
  47. }
  48.  
  49. void ASSIGNROOM(int room, SPECIAL(fname))
  50. {
  51.   if (real_room(room) >= 0)
  52.     world[real_room(room)].func = fname;
  53.   else if (!mini_mud) {
  54.     sprintf(buf, "SYSERR: Attempt to assign spec to non-existant rm. #%d",
  55.         room);
  56.     log(buf);
  57.   }
  58. }
  59.  
  60.  
  61. /* ********************************************************************
  62. *  Assignments                                                        *
  63. ******************************************************************** */
  64.  
  65. /* assign special procedures to mobiles */
  66. void assign_mobiles(void)
  67. {
  68.   SPECIAL(postmaster);
  69.   SPECIAL(cityguard);
  70.   SPECIAL(receptionist);
  71.   SPECIAL(cryogenicist);
  72.   SPECIAL(guild_guard);
  73.   SPECIAL(guild);
  74.   SPECIAL(puff);
  75.   SPECIAL(fido);
  76.   SPECIAL(janitor);
  77.   SPECIAL(mayor);
  78.   SPECIAL(snake);
  79.   SPECIAL(thief);
  80.   SPECIAL(magic_user);
  81.   void assign_kings_castle(void);
  82.  
  83.   assign_kings_castle();
  84.  
  85.   ASSIGNMOB(1, puff);
  86.  
  87.   /* Immortal Zone */
  88.   ASSIGNMOB(1200, receptionist);
  89.   ASSIGNMOB(1201, postmaster);
  90.   ASSIGNMOB(1202, janitor);
  91.  
  92.   /* Midgaard */
  93.   ASSIGNMOB(3005, receptionist);
  94.   ASSIGNMOB(3010, postmaster);
  95.   ASSIGNMOB(3020, guild);
  96.   ASSIGNMOB(3021, guild);
  97.   ASSIGNMOB(3022, guild);
  98.   ASSIGNMOB(3023, guild);
  99.   ASSIGNMOB(3024, guild_guard);
  100.   ASSIGNMOB(3025, guild_guard);
  101.   ASSIGNMOB(3026, guild_guard);
  102.   ASSIGNMOB(3027, guild_guard);
  103.   ASSIGNMOB(3059, cityguard);
  104.   ASSIGNMOB(3060, cityguard);
  105.   ASSIGNMOB(3061, janitor);
  106.   ASSIGNMOB(3062, fido);
  107.   ASSIGNMOB(3066, fido);
  108.   ASSIGNMOB(3067, cityguard);
  109.   ASSIGNMOB(3068, janitor);
  110.   ASSIGNMOB(3095, cryogenicist);
  111.   ASSIGNMOB(3105, mayor);
  112.  
  113.   /* MORIA */
  114.   ASSIGNMOB(4000, snake);
  115.   ASSIGNMOB(4001, snake);
  116.   ASSIGNMOB(4053, snake);
  117.   ASSIGNMOB(4100, magic_user);
  118.   ASSIGNMOB(4102, snake);
  119.   ASSIGNMOB(4103, thief);
  120.  
  121.   /* Redferne's */
  122.   ASSIGNMOB(7900, cityguard);
  123.  
  124.   /* PYRAMID */
  125.   ASSIGNMOB(5300, snake);
  126.   ASSIGNMOB(5301, snake);
  127.   ASSIGNMOB(5304, thief);
  128.   ASSIGNMOB(5305, thief);
  129.   ASSIGNMOB(5309, magic_user); /* should breath fire */
  130.   ASSIGNMOB(5311, magic_user);
  131.   ASSIGNMOB(5313, magic_user); /* should be a cleric */
  132.   ASSIGNMOB(5314, magic_user); /* should be a cleric */
  133.   ASSIGNMOB(5315, magic_user); /* should be a cleric */
  134.   ASSIGNMOB(5316, magic_user); /* should be a cleric */
  135.   ASSIGNMOB(5317, magic_user);
  136.  
  137.   /* High Tower Of Sorcery */
  138.   ASSIGNMOB(2501, magic_user); /* should likely be cleric */
  139.   ASSIGNMOB(2504, magic_user);
  140.   ASSIGNMOB(2507, magic_user);
  141.   ASSIGNMOB(2508, magic_user);
  142.   ASSIGNMOB(2510, magic_user);
  143.   ASSIGNMOB(2511, thief);
  144.   ASSIGNMOB(2514, magic_user);
  145.   ASSIGNMOB(2515, magic_user);
  146.   ASSIGNMOB(2516, magic_user);
  147.   ASSIGNMOB(2517, magic_user);
  148.   ASSIGNMOB(2518, magic_user);
  149.   ASSIGNMOB(2520, magic_user);
  150.   ASSIGNMOB(2521, magic_user);
  151.   ASSIGNMOB(2522, magic_user);
  152.   ASSIGNMOB(2523, magic_user);
  153.   ASSIGNMOB(2524, magic_user);
  154.   ASSIGNMOB(2525, magic_user);
  155.   ASSIGNMOB(2526, magic_user);
  156.   ASSIGNMOB(2527, magic_user);
  157.   ASSIGNMOB(2528, magic_user);
  158.   ASSIGNMOB(2529, magic_user);
  159.   ASSIGNMOB(2530, magic_user);
  160.   ASSIGNMOB(2531, magic_user);
  161.   ASSIGNMOB(2532, magic_user);
  162.   ASSIGNMOB(2533, magic_user);
  163.   ASSIGNMOB(2534, magic_user);
  164.   ASSIGNMOB(2536, magic_user);
  165.   ASSIGNMOB(2537, magic_user);
  166.   ASSIGNMOB(2538, magic_user);
  167.   ASSIGNMOB(2540, magic_user);
  168.   ASSIGNMOB(2541, magic_user);
  169.   ASSIGNMOB(2548, magic_user);
  170.   ASSIGNMOB(2549, magic_user);
  171.   ASSIGNMOB(2552, magic_user);
  172.   ASSIGNMOB(2553, magic_user);
  173.   ASSIGNMOB(2554, magic_user);
  174.   ASSIGNMOB(2556, magic_user);
  175.   ASSIGNMOB(2557, magic_user);
  176.   ASSIGNMOB(2559, magic_user);
  177.   ASSIGNMOB(2560, magic_user);
  178.   ASSIGNMOB(2562, magic_user);
  179.   ASSIGNMOB(2564, magic_user);
  180.  
  181.   /* SEWERS */
  182.   ASSIGNMOB(7006, snake);
  183.   ASSIGNMOB(7009, magic_user);
  184.   ASSIGNMOB(7200, magic_user);
  185.   ASSIGNMOB(7201, magic_user);
  186.   ASSIGNMOB(7202, magic_user);
  187.  
  188.   /* FOREST */
  189.   ASSIGNMOB(6112, magic_user);
  190.   ASSIGNMOB(6113, snake);
  191.   ASSIGNMOB(6114, magic_user);
  192.   ASSIGNMOB(6115, magic_user);
  193.   ASSIGNMOB(6116, magic_user); /* should be a cleric */
  194.   ASSIGNMOB(6117, magic_user);
  195.  
  196.   /* ARACHNOS */
  197.   ASSIGNMOB(6302, magic_user);
  198.   ASSIGNMOB(6309, magic_user);
  199.   ASSIGNMOB(6312, magic_user);
  200.   ASSIGNMOB(6314, magic_user);
  201.   ASSIGNMOB(6315, magic_user);
  202.  
  203.   /* Desert */
  204.   ASSIGNMOB(5004, magic_user);
  205.   ASSIGNMOB(5005, guild_guard); /* brass dragon */
  206.   ASSIGNMOB(5010, magic_user);
  207.   ASSIGNMOB(5014, magic_user);
  208.  
  209.   /* Drow City */
  210.   ASSIGNMOB(5103, magic_user);
  211.   ASSIGNMOB(5104, magic_user);
  212.   ASSIGNMOB(5107, magic_user);
  213.   ASSIGNMOB(5108, magic_user);
  214.  
  215.   /* Old Thalos */
  216.   ASSIGNMOB(5200, magic_user);
  217.   ASSIGNMOB(5201, magic_user);
  218.   ASSIGNMOB(5209, magic_user);
  219.  
  220.   /* New Thalos */
  221. /* 5481 - Cleric (or Mage... but he IS a high priest... *shrug*) */
  222.   ASSIGNMOB(5404, receptionist);
  223.   ASSIGNMOB(5421, magic_user);
  224.   ASSIGNMOB(5422, magic_user);
  225.   ASSIGNMOB(5423, magic_user);
  226.   ASSIGNMOB(5424, magic_user);
  227.   ASSIGNMOB(5425, magic_user);
  228.   ASSIGNMOB(5426, magic_user);
  229.   ASSIGNMOB(5427, magic_user);
  230.   ASSIGNMOB(5428, magic_user);
  231.   ASSIGNMOB(5434, cityguard);
  232.   ASSIGNMOB(5440, magic_user);
  233.   ASSIGNMOB(5455, magic_user);
  234.   ASSIGNMOB(5461, cityguard);
  235.   ASSIGNMOB(5462, cityguard);
  236.   ASSIGNMOB(5463, cityguard);
  237.   ASSIGNMOB(5482, cityguard);
  238. /*
  239. 5400 - Guildmaster (Mage)
  240. 5401 - Guildmaster (Cleric)
  241. 5402 - Guildmaster (Warrior)
  242. 5403 - Guildmaster (Thief)
  243. 5456 - Guildguard (Mage)
  244. 5457 - Guildguard (Cleric)
  245. 5458 - Guildguard (Warrior)
  246. 5459 - Guildguard (Thief)
  247. */
  248.  
  249.   /* ROME */
  250.   ASSIGNMOB(12009, magic_user);
  251.   ASSIGNMOB(12018, cityguard);
  252.   ASSIGNMOB(12020, magic_user);
  253.   ASSIGNMOB(12021, cityguard);
  254.   ASSIGNMOB(12025, magic_user);
  255.   ASSIGNMOB(12030, magic_user);
  256.   ASSIGNMOB(12031, magic_user);
  257.   ASSIGNMOB(12032, magic_user);
  258.  
  259.   /* King Welmar's Castle (not covered in castle.c) */
  260.   ASSIGNMOB(15015, thief);      /* Ergan... have a better idea? */
  261.   ASSIGNMOB(15032, magic_user); /* Pit Fiend, have something better?  Use it */
  262.  
  263.   /* DWARVEN KINGDOM */
  264.   ASSIGNMOB(6500, cityguard);
  265.   ASSIGNMOB(6502, magic_user);
  266.   ASSIGNMOB(6509, magic_user);
  267.   ASSIGNMOB(6516, magic_user);
  268. }
  269.  
  270.  
  271.  
  272. /* assign special procedures to objects */
  273. void assign_objects(void)
  274. {
  275.   SPECIAL(bank);
  276.   SPECIAL(gen_board);
  277.  
  278.   ASSIGNOBJ(3096, gen_board);    /* social board */
  279.   ASSIGNOBJ(3097, gen_board);    /* freeze board */
  280.   ASSIGNOBJ(3098, gen_board);    /* immortal board */
  281.   ASSIGNOBJ(3099, gen_board);    /* mortal board */
  282.  
  283.   ASSIGNOBJ(3034, bank);    /* atm */
  284.   ASSIGNOBJ(3036, bank);    /* cashcard */
  285. }
  286.  
  287.  
  288.  
  289. /* assign special procedures to rooms */
  290. void assign_rooms(void)
  291. {
  292.   extern int dts_are_dumps;
  293.   int i;
  294.  
  295.   SPECIAL(dump);
  296.   SPECIAL(pet_shops);
  297.   SPECIAL(pray_for_items);
  298.  
  299.   ASSIGNROOM(3030, dump);
  300.   ASSIGNROOM(3031, pet_shops);
  301.  
  302.   if (dts_are_dumps)
  303.     for (i = 0; i < top_of_world; i++)
  304.       if (IS_SET(ROOM_FLAGS(i), ROOM_DEATH))
  305.     world[i].func = dump;
  306. }
  307.